<?php
/*
	Copyright © Eleanor CMS
	URL: http://eleanor-cms.ru, http://eleanor-cms.com
	E-mail: support@eleanor-cms.ru
	Developing: Alexander Sunvas*
	Interface: Rumin Sergey
	=====
	*Pseudonym
*/
class TplComments {
	public static function ShowComments($rights,$pagpq,$postquery,$dataquery,$cnt,$pp,$page,$pages,$statuses,$gname,$captcha,$links)
	{
		array_push($GLOBALS['jscripts'],'js/eleanor_comments.js','js/eleanor_comments-'.Language::$main.'.js');
		$lang = Eleanor::$Language['comments'];
		$GLOBALS['Eleanor']->Editor->type = null;
		$editor='';
		if($rights['post'] !== false) {
			$Lst = Eleanor::LoadListTemplate('table-form');
			$editor .=
			// ($rights['post']==-1 ? Eleanor::$Template->Message($lang['needch'],'info') : '')
			'<div id="jautajumi_atbildes_form_title_cont">
				<div id="jautajumi_atbildes_form_title">
					'.$lang['addc'].'
				</div>
				<div id="jautajumi_atbildes_form_strange"></div>
			</div>'
			.$Lst->form(array('class' => 'comment_submit_form jautajumi_atbildes_another_form newcomment'))->begin()
				.($gname === false ? '' : $Lst->item('',Eleanor::Input('name',$gname,array('tabindex'=>1, 'placeholder' => $lang['yn']))))
				.$Lst->item('',$GLOBALS['Eleanor']->Editor->Area('text','',array('bb'=>array('tabindex'=>2, 'placeholder' => $lang['yc']))))
				.$Lst->button(Eleanor::Input('parent',0, array('type' => 'hidden')).Eleanor::Button($lang['addc']))
			->end()->endform();
		}
		$reverse = $page < 0;
		$pager=Eleanor::$Template->Pages($cnt,$pp,$page,array($links['pages'],$reverse ? $pages : 1=>$links['first_page']),'C.GoToPage','comments');
		if($pagpq[3])
			Eleanor::LoadOptions('user-profile');
		return '<div id="comments">'
			.($pagpq[3] ? '<div class="parent">'.static::CommentsPost($rights,$pagpq[3]['id'],$pagpq[3],true,$pagpq[1],$pagpq[2],$pagpq[4],$lang).'</div>' : '')
			.'<div class="comments'.($pagpq[3] ? ' children' : '').'"'.($pagpq[0] ? '>'.static::CommentsPosts($rights,$pagpq,$lang) : ' style="display:none">').'</div>'
			.'<div class="paginator"'.($pager ? '>'.$pager : ' style="display:none">').'</div>'
			.$editor.'</div><script>/*<![CDATA[*/var C;$(function(){C=new CORE.Comments('.Eleanor::JsVars(array(
				'lastpost'=>time(),
				'postquery'=>$postquery,
				'!dataquery'=>'["'.join('","',$dataquery).'"]',
				'nextn'=>$statuses[1]+$statuses[0],
				'reverse'=>$reverse,
				'page'=>$page,
				'pages'=>$pages,
				'baseurl'=>$links['first_page'],
				'parent'=>$pagpq[3] ? (int)$pagpq[3]['id'] : 0,
			),false,true,'').')})//]]></script>';
	}

	/*
		Элемент шаблона: "прослойка" при склеивании комментариев
		$diff - массив разицы текущего времени и ранее опубликованного комментария, ключи:
			0 - годы
			1 - месяцы
			2 - дни
			3 - часы
			4 - минуты
			5 - секунды
	*/
	public static function CommentsAddedAfter($diff)
	{
		return'<br><br><span class="small">'.call_user_func_array(Eleanor::$Language['comments']['added_after'],$diff).':</span><br>';
	}

	/*
		Элемент массива. Оформления цитаты
		$q - массив цитаты, ключи:
			name - имя пользователя
			date - дата цитаты
			find - ссылка на оригинальный комментарий
			id - идентификатор поста, который цитируется
			text - текст цитаты
	*/
	public static function CommentsQuote($q)
	{
		return '<article class="jautajumi_atbildes_record_answer">
		<div><span>'. $q['name'] .'</span> '. Eleanor::$Language['comments']['cite'] .'</div>
		<blockquote>'. $q['text'] .'</blockquote>
		</article>';
	}

	/*
		Элемент шаблона: загрузка новых комментариев
		Описание входящих параметров смотрите в методе ShowComments (выше).
	*/
	public static function CommentsLNC($rights,$pagpq)
	{
		if($pagpq[3])
			Eleanor::LoadOptions('user-profile');
		return array(
			'moderate'=>$rights['status'] && $pagpq[0] ? static::CommentsModerate($rights) : '',
			'comments'=>$pagpq[0] ? static::CommentsPosts($rights,$pagpq) : '',
		);
	}

	/*
		Элемент шаблона: Загрузка страницы на AJAX.
		Описание входящих параметров смотрите в методе ShowComments (выше).
	 */
	public static function CommentsLoadPage($rights,$pagpq,$cnt,$pp,$page,$pages,$parent,$links)
	{
		$r=array('paginator'=>Eleanor::$Template->Pages($cnt,$pp,$page,array($links['pages'],$page<0 ? $pages : 1=>$links['first_page']),'C.GoToPage','comments'));
		if($pagpq)
		{
			if($pagpq[0])
			$r['comments']=static::CommentsPosts($rights,$pagpq);
			else
			{
				$r['moderate']=$r['comments']='';
				$r['nocomments']=Eleanor::$Template->Message($parent ? Eleanor::$Language['comments']['anc'] : Eleanor::$Language['comments']['nc'],'info');
			}
		}
		return$r;
	}

	/*
		Элемент шаблона: форма редактирования комментария
		$a - массив редактируемого комментария, ключи:
			id - идентификатор комментария
			status - статус комментария
			date - дата комментария
			author_id - идентификатор автора комментария
			author - имя автора комментария
			text - текст комментария
	*/
	public static function CommentsEdit($a)
	{
		$lang=Eleanor::$Language['comments'];
		return'<form>'.$GLOBALS['Eleanor']->Editor->Area('text'.$a['id'],$a['text']).'<div style="text-align:center">'.Eleanor::Button($lang['save']).' '.Eleanor::Button(Eleanor::$Language['tpl']['cancel'],'button',array('class'=>'cb-cancel')).'</div></form>';
	}

	/*
		Элемент шаблона: текст комментария после его сохранения (после редактирования)
			$text - текст текущего комментария
			$quotes - массив цитат из родительских комментариев (комментариев, ответом на которые, является текущий комментарий). Формат id=>text.
				Цитаты отсортированы в родительском порядке (комментарии 1 и 2):
					Комментарий 1
						Комментарий 2: Ответ на комментарий 1:
							Комментарий 3 (текущий комментарий, не входит в список цитаты): Ответ на комментарий 2
			Каждая цитата содержит в себе строку <!-- SUBQUOTE --> для вставки подцитаты.
	*/
	public static function CommentsAfterEdit($text,$quotes)
	{
		$pq='';
		if(count($quotes)>2)
			array_splice($quotes,-2);
		foreach($quotes as $v)
			$pq=str_replace('<!-- SUBQUOTE -->',$pq,$v);
		$pq=str_replace('<!-- SUBQUOTE -->','',$pq);
		return$pq.$text;
	}

	protected static function CommentsModerate($rights)
	{
		$lang=Eleanor::$Language['comments'];
		$GLOBALS['jscripts'][]='js/checkboxes.js';
		return Eleanor::Select('',Eleanor::Option($lang['withsel'],'').Eleanor::Option($lang['doact'],1).Eleanor::Option($lang['toblock'],0).Eleanor::Option($lang['tomod'],-1).($rights['mdelete'] ? Eleanor::Option(Eleanor::$Language['tpl']['delete'],'delete') : ''),array('class'=>'modevent')).' '.Eleanor::Check('',false,array('id'=>'masscheck'));
	}

	protected static function CommentsPosts($rights,$pagpq)
	{
		$c='';
		if($pagpq[0] and !$pagpq[3])
			Eleanor::LoadOptions('user-profile');
		$mass=$rights['status'] || $rights['mdelete'];
		foreach($pagpq[0] as $k=>$v)
			$c.=static::CommentsPost($rights,$k,$v,$mass,$pagpq[1],$pagpq[2],$pagpq[4]);
		return$c;
	}

	protected static function CommentsPost($rights,$id,$c,$mass,$authors,$groups,$quotes) {
		$lang=Eleanor::$Language['comments'];
//		$ltpl=Eleanor::$Language['tpl'];
		$author=isset($authors[$c['author_id']]) ? $authors[$c['author_id']] : false;
		$group=$author && isset($groups[$author['_group']]) ? $groups[$author['_group']] : false;
		$pq='';
		if(count($c['parents'])>2)
			array_splice($c['parents'],0,-2);
		foreach($c['parents'] as &$pv)
			$pq = isset($quotes[$pv]) ? str_replace('<!-- SUBQUOTE -->', $pq, $quotes[$pv]) : '';
		$pq = str_replace('<!-- SUBQUOTE -->','',$pq);
		$Lst = Eleanor::LoadListTemplate('table-form');
		$GLOBALS['Eleanor']->Editor->type = null;
		return'
		<section class="jautajumi_atbildes_record comment" id="comment'. $id .'">
			<article class="tab_content_atsauksme_history_record">
				<img class="tab_content_atsauksme_history_record_image" src="/templates/AutoDiagnostika/images/atsauksmes_cloud.png" alt="">
				<div class="tab_content_atsauksme_history_record_author">'.($group ? $author['name'] : $c['author']).'<span>'. Eleanor::$Language->Date($c['date'],'fdt') .'</span></div>
				<div class="tab_content_atsauksme_history_record_text">'. $pq . $c['text'] .'</div>
			</article>
			<div class="comment_submit_form_showing">
				'.$Lst->form(array(/*TODO need add class'id' => 'newcomment'*/'class' => 'comment_submit_form newcomment'))->begin()
				.(Eleanor::$Login->IsUser() ? null : $Lst->item(null, Eleanor::Input('name','',array('tabindex'=>1, 'placeholder' => $lang['yn']))))
				.$Lst->item(null, $GLOBALS['Eleanor']->Editor->Area('text1', '', array('bb'=>array('tabindex'=>2, 'class' => 'textform'), 'placeholder' => $lang['yc'], 'class' => 'textform')))
				.$Lst->button(Eleanor::Input('parent',$id, array('type' => 'hidden')) . Eleanor::Button($lang['addc']))
				->end()->endform().'
			</div>
			<div class="content_atsauksme_button">'. $lang['answer'] .'</div>
		</section>';
	}
}